#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <time.h>

void main()
{
    double t=0,tmax=25,h,pos[10000][2];
    double i,k,j;
    double raio,xi,yi,tal;
    //int compx,compy;
    double compx,compy;
    double sx,s0x,sy,s0y,vx,vy;
    int u,n,m;

    printf("Centro aleatorio para o circulo\n");

          //printf("Digite o raio da circunferencia %d: ",i);
          //scanf("%f",&raio);
          //printf("Digite o raio do circulo : ",i);
          //scanf("%f",&raio);
          //printf("Digite o comprimento do retangulo na direcao x : ",k);
          //scanf("%f",&compx);
          //printf("Digite o comprimento do retangulo na direcao y : ",j);
          //scanf("%f",&compy);

 //srand(time(NULL));
 //xi=(rand() % (compx-raio)) + raio;		//centro do circulo criado dentro da regiao no eixo x
 //yi=(rand() % (compy-raio)) + raio;     //centro do circulo criado dentro da regiao no eixo y
   compx=1;
   compy=1;
   raio=0.1;
   xi = 0.85;
   yi = 0.5;
          //printf("\nPontos = %f",xi);
          //printf("\nPontos = %f",yi);

 h=0.01;        //Intervalo de amostragem
 u=0;
 vx = 1;
 vy = 1;
 s0x = xi;
 s0y = yi;
 tal = 0.99; // coeficiente de restituicao, relacao entre velocidade antes da colisao
             // e velocidade depois da colisao
             //printf("\n if1-aux:%f",aux);
   while (t<tmax) {
// Equacao do movimento retilineo uniforme
// s=s0+v*t
     //sx = s0x + v*t
     //sy = s0y + v*2*t
     //------------------------------------------------------------------------
        //printf("\n s0x:%f,s0y:%f,compx:%f,compy:%f,raio:%f",s0x,s0y, compx,compy, raio);
       if  ((s0x < (compx-raio)) && (s0x > (raio)) && (s0y < (compy-raio)) && (s0y > (raio)))
      {
      //printf("\nCompx: %f, Raio: %f",compx,raio);
   //printf("\n if4.1-s0x:%f,s0y:%f,sx:%f,sy:%f,raio:%f",s0x,s0y, sx,sy, raio);
    //printf("\n if4-aux:%f",aux);
    sx = s0x +vx*h;
    sy = s0y +vy*h;
    s0x = sx;
    s0y = sy;
    printf("\n if4-s0x:%f,s0y:%f,sx:%f,sy:%f,raio:%f",s0x,s0y, sx,sy, raio);
    //printf("\n");
     }

        else if ((s0x >= (compx-raio)) || (s0x <= (raio)) && (s0y < (compy-raio)) && (s0y > (raio))) {


      //printf("\nS0X: %f",s0x);
     sy = s0y +vy*h;
     s0y = sy;
     vx=-tal*vx;
     //printf("\n if1-aux:%f",aux);
     sx = s0x +vx*h ;
     s0x = sx;
       printf("\n if1-s0x:%f,s0y:%f,sx:%f,sy:%f,raio:%f",s0x,s0y, sx,sy, raio);
      // printf("\n");

     }
     //------------------------------------------------------------------------
     //------------------------------------------------------------------------
      else if ((s0y >= (compy-raio)) || (s0y <= (raio)) && (s0x < (compx-raio)) && (s0x > (raio)))
     {
     sx = s0x +vx*h;
     s0x = sx;
     vy=-vy;

     sy = s0y +vy*h;
     s0y = sy;
       printf("\n if2-s0x:%f,s0y:%f,sx:%f,sy:%f,raio:%f",s0x,s0y, sx,sy, raio);
        //printf("\n");
       }
     //------------------------------------------------------------------------
     //------------------------------------------------------------------------
       else if ((s0x >= (compx-raio)) || (s0x <= (raio)) && (s0y >= (compy-raio)) || (s0y <= (raio)))
     {
     vx=-vx;
     vy=-vy;
     sx = s0x +vx*h;
     sy = s0y +vy*h;

     s0x = sx;
     s0y = sy;
    printf("\n if3-s0x:%f,s0y:%f,sx:%f,sy:%f,raio:%f",s0x,s0y, sx,sy, raio);
    //printf("\n");
      }
    //s0x = sx;
    //s0y = sy;
    pos[u][0] = sx;
    pos[u][1] = sy;
    u = u +1;
    t =t + h;
    //printf("\nPontos = %f",xi);
    //printf("\n");
     }
  /*for (n = 0; n < u ; n++){
     for ( m = 0; m < 2 ; m++)
        printf("%f", pos[n][m]);
        printf("\n");
 }                   */
 printf("Numero de espacos percorridos u: %i",u);
   //     printf("\n");
}
